package org.example.ideavr.common.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.Map;

public class JwtUtils {

    // 生成JWT的方法
    public static String generateJwt(long ttlMillis, String secretKey, Map<String, Object> claims) {
        //指定签名算法
        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
        //计算jwt时间
        long expMillis = System.currentTimeMillis() + ttlMillis;
        Date expDate = new Date(expMillis);
        //设置jwt的body
        JwtBuilder jwtBuilder = Jwts.builder()
                .setClaims(claims)
                .signWith(signatureAlgorithm, secretKey.getBytes(StandardCharsets.UTF_8))
                .setExpiration(expDate);
        return jwtBuilder.compact();
    }

    // 验证JWT的方法


    // 解析JWT的方法
    public static Claims parseJwt(String secretKey, String token)  {
        Claims claims = Jwts.parser()
                .setSigningKey(secretKey.getBytes(StandardCharsets.UTF_8))
                .parseClaimsJws(token)
                .getBody();
        return claims;
    }
}
